大家好~
如果有個表單驗證需要大量重複使用的話,
我們可以為此表單驗證建立一個 FormRequest class。
接下來的實作內容就用 Day05 做好的留言板表單驗證當作例子吧!
php artisan make:request MessageValidation
建立好的 FormRequest class 會在 app/Http/Requests
下喔。
首先將 authorize()
的 return false
改成 return true
。
public function authorize()
{
return true;
}
將我們想使用的驗證規則寫在 rules()
這個 function 內吧!
public function rules()
{
return [
'title' => 'required|string|max:50',
'content' => 'required|string|between:2,255'
];
}
如果有想自定義的錯誤訊息,
可以在我們建立的 FormRequest class 內建立一個 messages()
,
然後把自定義的錯誤訊息內容寫在這個 function 內。
public function messages()
{
return [
'required' => ':attribute 未填。',
'string' => ':attribute 格式不支援。',
'between' => ':attribute 文字長度請在:min至:max間。',
'max' => ':attribute 文字長度請在:max以內。',
];
}
如果是想針對一個欄位上的規則去做自定義的錯誤訊息,
可以在規則前面加上欄位名稱,
並用 .
連接。
如:
return [
'title.max' => ':attribute 文字長度請在:max以內。',
];
自定義的錯誤訊息內有提供一些佔位符供我們使用,
上面用到的 :attribute
、 :min
、 :max
都是佔位符。
如果需要其他佔位符的用法可參考官方文件。
完成後的自定義錯誤訊息大概是像這樣子~
先在 Controller 內 use 我們的 FormRequest class。
use App\Http\Requests\MessageValidation;
然後將原本 type-hint 的 Request
改成我們要使用的 FormRequest class,
這樣傳入的資料就會是做完表單驗證的資料囉。
下面是用新增留言功能作為例子:
public function store(MessageValidation $request)
{
$validated=$request->validated();
$message = Auth::user()->messages()->create($validated);
return response(MessageResource::make($message), Response::HTTP_CREATED);
}
今天就先這樣啦,
明天來認識如何不用另外建立 FormRequest class 也能自定義錯誤訊息的方式吧!
大家明天見啦~
若文章有任何問題,
還請大家不吝賜教!